04. 三种方法

Nd113 C5 L02 04 L 三种方法 V1 RENDER V1

权衡分析

下列问题比较了视频中讨论的罚单存储的三个方案:供你参考:

方案 1:优先包 - 把罚单分为三个包(优先级分别为“高”、“中”、“低”)。罚单填完后,即放入对应的包中。

方案 2:一个盒子,首先按优先级排序,然后按日期排序 - 一个盒子。高优先级的罚单在盒子后部。低优先级的罚单在前部。在一个优先级组 内部 ,罚单按日期排序。

方案 3:三个盒子,每个对应一个优先级 - 每个盒子里放置一个优先级的罚单,按日期排序。

假设你想找到 最旧的罚单 (所有优先级)。

那个系统找到最旧的罚单平均耗时 最长 (检索最慢)?

SOLUTION: 方案 1:罚单包

方案筛选

考虑了上面的问题后,我决定排除方案 1。我无法想象,为了找到最旧的罚单,我必须浏览 每一张罚单

不管我们用什么系统,都应该具备根据日期组织罚单的功能。

下个问题衡量了方案 2 和方案 3 之间的优劣。

同样地,假设你想找到最旧的罚单(所有优先级)。

那个系统找到最旧的罚单平均耗时 最短 (检索最快)?

SOLUTION: 方案 3:三个盒子

不管采用哪个方案,一旦罚单已经填完,就要把它 插入 盒子里。

那个方案的新罚单插入速度 最快

SOLUTION: 方案 3:三个盒子

迄今为止,我们考虑的都是关于性能的“时间”方面。那么空间呢?

以下哪种方案会占用 最少 的车辆空间?

SOLUTION: 方案 2:单个盒子

做出选择

考虑了上面的问题后,我决定采用方案 3。它可能会占用更多车辆空间,但汽车中有大量空间。此外,该方案在插入和查找速度方面有改进,因此空间占用这个弊端可以接受。

这种思维方式和你编写软件时的权衡分析非常相似。通常情况下,并没有“全方位最优”的答案,但往往会有一个答案很明显更适合问题的要求。

如果你有其他答案,希望权衡其利弊,你可以去纳米学位的 Slack 频道参与讨论!